Skip to content

Conversation

@notfoundzzz
Copy link
Contributor

如何测试

  1. 启动Mogan
  2. 插入matlab代码块
  3. 输入含有单引号的代码,观察是否能被正确的高亮,例如:
  • A' + B
  • x = y' * z
  • M(1,:)'
  • C = A'';
  • s3 = 'it''s ok';
  • ['a' 'b']

测试文档: TeXmacs/tests/tmu/209_14.tmu

2026/01/30

What

  • 增加字符串起始限制规则,避免 MATLAB 转置 ' 被当作字符串
  • 支持单引号字符串的 '' 转义
  • 空白后允许开始新字符串(如 ['a' 'b']

How

  • 新增 start_disallow_after 配置,在字符串解析前判断前一字符
  • string_parser 支持 double_escape,遇到 '' 不结束字符串
  • MATLAB 启用:start_disallow_after (alpha digit underscore ) ] } . ')double_escape "'"
  • 规则仅在 ' 紧邻前一字符时生效,若中间有空白则允许新字符串开始

Why

关联issue #2724

  • MATLAB 的 ' 既是转置又是字符串定界符,需避免误判
  • 单引号字符串里 '' 合法,需要避免截断
  • 字符串拼接常用空白分隔(['a' 'b']),需继续识别为字符串

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant